From e6a343408e208db603ac3d8f08e207bfaa8e9321 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 10 May 2004 19:10:27 +0000 Subject: [PATCH] Set the entry in the default handler of the ::match-selected signal. 2004-05-10 Matthias Clasen * gtk/gtkentrycompletion.c (gtk_entry_completion_list_button_press): Set the entry in the default handler of the ::match-selected signal. (#137226) --- ChangeLog | 4 ++++ ChangeLog.pre-2-10 | 4 ++++ ChangeLog.pre-2-6 | 4 ++++ ChangeLog.pre-2-8 | 4 ++++ gtk/gtkentrycompletion.c | 48 +++++++++++++++++++++------------------- 5 files changed, 41 insertions(+), 23 deletions(-) diff --git a/ChangeLog b/ChangeLog index d5cbf40fc6..e812338dc3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2004-05-10 Matthias Clasen + * gtk/gtkentrycompletion.c (gtk_entry_completion_list_button_press): + Set the entry in the default handler of the ::match-selected signal. + (#137226) + * gtk/gtkcombobox.c (gtk_combo_box_menu_position_below): If we don't do the move-selected-item below pointer thingie, do the place-below-or-above one. diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index d5cbf40fc6..e812338dc3 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,5 +1,9 @@ 2004-05-10 Matthias Clasen + * gtk/gtkentrycompletion.c (gtk_entry_completion_list_button_press): + Set the entry in the default handler of the ::match-selected signal. + (#137226) + * gtk/gtkcombobox.c (gtk_combo_box_menu_position_below): If we don't do the move-selected-item below pointer thingie, do the place-below-or-above one. diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index d5cbf40fc6..e812338dc3 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,5 +1,9 @@ 2004-05-10 Matthias Clasen + * gtk/gtkentrycompletion.c (gtk_entry_completion_list_button_press): + Set the entry in the default handler of the ::match-selected signal. + (#137226) + * gtk/gtkcombobox.c (gtk_combo_box_menu_position_below): If we don't do the move-selected-item below pointer thingie, do the place-below-or-above one. diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index d5cbf40fc6..e812338dc3 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,5 +1,9 @@ 2004-05-10 Matthias Clasen + * gtk/gtkentrycompletion.c (gtk_entry_completion_list_button_press): + Set the entry in the default handler of the ::match-selected signal. + (#137226) + * gtk/gtkcombobox.c (gtk_combo_box_menu_position_below): If we don't do the move-selected-item below pointer thingie, do the place-below-or-above one. diff --git a/gtk/gtkentrycompletion.c b/gtk/gtkentrycompletion.c index 0edfe85d32..1d1ab74ea1 100644 --- a/gtk/gtkentrycompletion.c +++ b/gtk/gtkentrycompletion.c @@ -119,6 +119,9 @@ static void gtk_entry_completion_action_data_func (GtkTreeViewColumn GtkTreeIter *iter, gpointer data); +static gboolean gtk_entry_completion_match_selected (GtkEntryCompletion *completion, + GtkTreeModel *model, + GtkTreeIter *iter); static GObjectClass *parent_class = NULL; static guint entry_completion_signals[LAST_SIGNAL] = { 0 }; @@ -175,6 +178,8 @@ gtk_entry_completion_class_init (GtkEntryCompletionClass *klass) object_class->get_property = gtk_entry_completion_get_property; object_class->finalize = gtk_entry_completion_finalize; + klass->match_selected = gtk_entry_completion_match_selected; + /** * GtkEntryCompletion::match-selected: * @widget: the object which received the signal @@ -630,8 +635,8 @@ gtk_entry_completion_list_button_press (GtkWidget *widget, event->x, event->y, &path, NULL, NULL, NULL)) { - gboolean entry_set; GtkTreeIter iter; + gboolean entry_set; gtk_tree_model_get_iter (GTK_TREE_MODEL (completion->priv->filter_model), &iter, path); @@ -645,29 +650,8 @@ gtk_entry_completion_list_button_press (GtkWidget *widget, g_signal_handler_unblock (completion->priv->entry, completion->priv->changed_id); - if (!entry_set) - { - gchar *str = NULL; - - gtk_tree_model_get (GTK_TREE_MODEL (completion->priv->filter_model), - &iter, - completion->priv->text_column, &str, - -1); - - g_signal_handler_block (completion->priv->entry, - completion->priv->changed_id); - gtk_entry_set_text (GTK_ENTRY (completion->priv->entry), str); - g_signal_handler_unblock (completion->priv->entry, - completion->priv->changed_id); - - /* move cursor to the end */ - gtk_editable_set_position (GTK_EDITABLE (completion->priv->entry), - -1); - - g_free (str); - } - _gtk_entry_completion_popdown (completion); + return TRUE; } @@ -1227,3 +1211,21 @@ _gtk_entry_completion_popdown (GtkEntryCompletion *completion) gtk_widget_hide (completion->priv->popup_window); } + +static gboolean +gtk_entry_completion_match_selected (GtkEntryCompletion *completion, + GtkTreeModel *model, + GtkTreeIter *iter) +{ + gchar *str = NULL; + + gtk_tree_model_get (model, iter, completion->priv->text_column, &str, -1); + gtk_entry_set_text (GTK_ENTRY (completion->priv->entry), str); + + /* move cursor to the end */ + gtk_editable_set_position (GTK_EDITABLE (completion->priv->entry), -1); + + g_free (str); + + return TRUE; +} -- 2.30.2